import { Module } from '@nestjs/common';
import { ProvideTestService } from './provide-test.service';
import { ProvideTestController } from './provide-test.controller';

@Module({
  controllers: [ProvideTestController],

  providers: [ProvideTestService, {
    // 自定义提供者
    provide: 'custom',
    useValue: {
      name: 'custom'
    }
  },

    // 工厂函数
    {
      provide: 'factory',
      useFactory: () => {
        return {
          name: 'factory'
        }
      }
    },

    // 异步的工厂函数
    // 异步注入只是服务端异步，当注入后，每次前端获取都是立刻得到的，不是每次都是异步
    {
      provide: 'factory2',
      async useFactory() {
        return await new Promise((r) => {
          setTimeout(() => {
            r('异步的工厂函数')
          }, 3000)

        })
      }
    }

  ]
})
export class ProvideTestModule { }
